﻿using System;
using Platformer_Example.Controller.Data;
using Platformer_Example.Controller.Input;
using Transformable_Engine_v2.Engine.Transformable_Math.Geometry;

namespace Platformer_Example.Controller.Character.Computer
{
    public abstract class BaseComputer : BaseInputCharacter
    {
        protected static readonly TE_Rectangle DefaultCollisionBox = new TE_Rectangle(0, 0, 2, 2).ToGridBound();
        protected static readonly TE_Rectangle DefaultWarpCollisionBox = new TE_Rectangle(0, 0, 0, 0).ToGridBound();
        protected static readonly TE_Rectangle DefaultLadderCollisionBox = new TE_Rectangle(0, 0, 0, 0).ToGridBound();
        protected static readonly TE_Vector2 DefaultLadderClimbSpeed = new TE_Vector2(0, 0).ToGridbound();
        protected static readonly int DefaultJumpCount = 1;
        protected static readonly TE_Vector2 DefaultWalkSpeed = new TE_Vector2(0.25f, 0).ToGridbound();
        protected static readonly float DefaultJumpHeight = -0.5f;
        protected static readonly TE_Rectangle DefaultPickupBox = new TE_Rectangle(0, 0, 0, 0);

        protected override TE_Rectangle CollisionPickup
        {
            get { return DefaultPickupBox; }
        }

        protected BaseComputer(InputState inputState, Team team) : base(inputState, team)
        {
        }

        protected override void OnKeyPressIdle(InputState.Key key)
        {
        }

        protected override void OnKeyReleaseIdle(InputState.Key key)
        {
        }

        protected override void OnKeyPressWalk(InputState.Key key)
        {
        }

        protected override void OnKeyReleaseWalk(InputState.Key key)
        {
        }

        protected override void OnKeyPressJump(InputState.Key key)
        {
        }

        protected override void OnKeyReleaseJump(InputState.Key key)
        {
        }

        protected override void OnKeyPressFall(InputState.Key key)
        {
        }

        protected override void OnKeyReleaseFall(InputState.Key key)
        {
        }

        protected override void OnKeyPressAttack(InputState.Key key)
        {
        }

        protected override void OnKeyReleaseAttack(InputState.Key key)
        {
        }

        protected override void OnKeyPressLadderIdle(InputState.Key key)
        {
        }

        protected override void OnKeyReleaseLadderIdle(InputState.Key key)
        {
        }

        protected override void OnKeyPressLadderClimb(InputState.Key key)
        {
        }

        protected override void OnKeyReleaseLadderClimb(InputState.Key key)
        {
        }

        protected override void OnKeyPressThrow(InputState.Key key)
        {
        }

        protected override void OnKeyReleaseThrow(InputState.Key key)
        {
        }

        protected override void OnKeyPressAirThrow(InputState.Key key)
        {
        }

        protected override void OnKeyReleaseAirThrow(InputState.Key key)
        {
        }

        protected override void OnKeyPressLongThrow(InputState.Key key)
        {
        }

        protected override void OnKeyReleaseLongThrow(InputState.Key key)
        {
        }

        protected override void OnKeyPressPickup(InputState.Key key)
        {
        }

        protected override void OnKeyReleasePickup(InputState.Key key)
        {
        }

        protected override void CreateIdleStateObjects()
        {
        }

        protected override void InitializeIdleState()
        {
        }

        protected override void UpdateIdleState(TimeSpan gameTime)
        {
        }

        protected override void EndIdleState()
        {
        }

        protected override void CreateWalkStateObjects()
        {
        }

        protected override void InitializeWalkState()
        {
        }

        protected override void UpdateWalkState(TimeSpan gameTime)
        {
        }

        protected override void EndWalkState()
        {
        }

        protected override void CreateJumpStateObjects()
        {
        }

        protected override void InitializeJumpState()
        {
        }

        protected override void UpdateJumpState(TimeSpan gameTime)
        {
        }

        protected override void EndJumpState()
        {
        }

        protected override void CreateFallStateObjects()
        {
        }

        protected override void InitializeFallState()
        {
        }

        protected override void UpdateFallState(TimeSpan gameTime)
        {
        }

        protected override void EndFallState()
        {
        }

        protected override void CreateAttackStateObjects()
        {
        }

        protected override void InitializeAttackState()
        {
        }

        protected override void UpdateAttackState(TimeSpan gameTime)
        {
        }

        protected override void EndAttackState()
        {
        }

        protected override void CreateLadderClimbStateObjects()
        {
        }

        protected override void InitializeLadderClimbState()
        {
        }

        protected override void UpdateLadderClimbState(TimeSpan gameTime)
        {
        }

        protected override void EndLadderClimbState()
        {
        }

        protected override void CreateLadderIdleStateObjects()
        {
        }

        protected override void InitializeLadderIdleState()
        {
        }

        protected override void UpdateLadderIdleState(TimeSpan gameTime)
        {
        }

        protected override void EndLadderIdleState()
        {
        }

        protected override void CreateThrowStateObjects()
        {
        }

        protected override void InitializeThrowState()
        {
        }

        protected override void UpdateThrowState(TimeSpan gameTime)
        {
        }

        protected override void EndThrowState()
        {
        }

        protected override void CreatePickupStateObjects()
        {
        }

        protected override void InitializePickupState()
        {
        }

        protected override void UpdatePickupState(TimeSpan gameTime)
        {
        }

        protected override void EndPickupState()
        {
        }

        protected override void CreateLongThrowStateObjects()
        {
        }

        protected override void InitializeLongThrowState()
        {
        }

        protected override void UpdateLongThrowState(TimeSpan gameTime)
        {
        }

        protected override void EndLongThrowState()
        {
        }

        protected override void CreateAirThrowStateObjects()
        {
        }

        protected override void InitializeAirThrowState()
        {
        }

        protected override void UpdateAirThrowState(TimeSpan gameTime)
        {
        }

        protected override void EndAirThrowState()
        {
        }
    }
}